package pe.com.casadesign.service.impl;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import pe.com.casadesign.dao.TransporteDAO;
import pe.com.casadesign.domain.ListaTransporte;
import pe.com.casadesign.domain.OperacionResultado;
import pe.com.casadesign.domain.Transporte;
import pe.com.casadesign.service.TransporteService;
import pe.com.casadesign.service.util.Constantes;

/**
 * Implementacion de TransporteService.
 * 
 * @author Pedro Vera
 * 
 */
@Service
public class TransporteServiceImpl implements TransporteService {
	private static final Logger logger = LoggerFactory.getLogger(TransporteServiceImpl.class);

    @Autowired
    private TransporteDAO transporteDAO;
    
	@Override
	public ListaTransporte listarTransporte(Transporte transporte) {
		return transporteDAO.listarTransporte(transporte);
	}

	@Override
	public Transporte obtenerTransporte(Transporte transporte) {
		return transporteDAO.obtenerTransporte(transporte);
	}

	@Override
	@Transactional (propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
	public OperacionResultado registrarTransporte(Transporte Transporte) {
		boolean resultado = transporteDAO.registrarTransporte(Transporte);
		
		OperacionResultado operacionResultado = new OperacionResultado();
		operacionResultado.setEsOK(resultado?Constantes.SI:Constantes.NO);
		
		return operacionResultado;
	}

	@Override
	@Transactional (propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
	public OperacionResultado modificarTransporte(Transporte Transporte) {
		boolean resultado = transporteDAO.modificarTransporte(Transporte);
		
		OperacionResultado operacionResultado = new OperacionResultado();
		operacionResultado.setEsOK(resultado?Constantes.SI:Constantes.NO);
		
		return operacionResultado;
	}

	@Override
	public OperacionResultado eliminarTransporte(Transporte Transporte) {
		boolean resultado = transporteDAO.eliminarTransporte(Transporte);
		
		OperacionResultado operacionResultado = new OperacionResultado();
		operacionResultado.setEsOK(resultado?Constantes.SI:Constantes.NO);
		
		return operacionResultado;
	}

}
